DMLNameProviderFactory.java
package org.codefilarete.stalactite.sql;
import java.util.Map;
import java.util.function.Function;
import org.codefilarete.stalactite.query.builder.DMLNameProvider;
import org.codefilarete.stalactite.query.model.Fromable;
/**
* A factory of {@link DMLNameProvider} to let one decides which concrete implementation he wants to provide.
* Typical usage is to provide an instance that protect against database vendor keywords (by quoting them).
*
* @author Guillaume Mary
*/
public interface DMLNameProviderFactory {
/**
* Expected to create a {@link DMLNameProvider} with given aliasing function.
*
* @param tableAliaser a {@link Function} that provides the alias of tables
* @return a {@link DMLNameProvider} that takes its aliases from given {@link Function}
*/
DMLNameProvider build(Function<Fromable, String> tableAliaser);
/**
* Expected to create a {@link DMLNameProvider} with given aliases.
*
* @param tableAliases a {@link Map} that provides the alias of tables
* @return a {@link DMLNameProvider} that takes its aliases from given {@link Map}
*/
default DMLNameProvider build(Map<? extends Fromable, String> tableAliases) {
return build(tableAliases::get);
}
}